home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / StandardFile.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  11.7 KB  |  300 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        StandardFile.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __STANDARDFILE__
  18. #define __STANDARDFILE__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __DIALOGS__
  27. #include <Dialogs.h>
  28. #endif
  29. /*    #include <Errors.h>                                            */
  30. /*    #include <Memory.h>                                            */
  31. /*        #include <MixedMode.h>                                    */
  32. /*    #include <Windows.h>                                        */
  33. /*        #include <Quickdraw.h>                                    */
  34. /*            #include <QuickdrawText.h>                            */
  35. /*        #include <Events.h>                                        */
  36. /*            #include <OSUtils.h>                                */
  37. /*        #include <Controls.h>                                    */
  38. /*            #include <Menus.h>                                    */
  39. /*    #include <TextEdit.h>                                        */
  40.  
  41. #ifndef __FILES__
  42. #include <Files.h>
  43. #endif
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #if GENERATINGPOWERPC
  50. #pragma options align=mac68k
  51. #endif
  52.  
  53. #ifdef __CFM68K__
  54. #pragma lib_export on
  55. #endif
  56.  
  57.  
  58. enum {
  59. /* resource IDs and item offsets of pre-7.0 dialogs */
  60.     putDlgID                    = -3999,
  61.     putSave                        = 1,
  62.     putCancel                    = 2,
  63.     putEject                    = 5,
  64.     putDrive                    = 6,
  65.     putName                        = 7,
  66.     getDlgID                    = -4000,
  67.     getOpen                        = 1,
  68.     getCancel                    = 3,
  69.     getEject                    = 5,
  70.     getDrive                    = 6,
  71.     getNmList                    = 7,
  72.     getScroll                    = 8,
  73. /* resource IDs and item offsets of 7.0 dialogs */
  74.     sfPutDialogID                = -6043,
  75.     sfGetDialogID                = -6042,
  76.     sfItemOpenButton            = 1,
  77.     sfItemCancelButton            = 2,
  78.     sfItemBalloonHelp            = 3,
  79.     sfItemVolumeUser            = 4,
  80.     sfItemEjectButton            = 5
  81. };
  82.  
  83. enum {
  84.     sfItemDesktopButton            = 6,
  85.     sfItemFileListUser            = 7,
  86.     sfItemPopUpMenuUser            = 8,
  87.     sfItemDividerLinePict        = 9,
  88.     sfItemFileNameTextEdit        = 10,
  89.     sfItemPromptStaticText        = 11,
  90.     sfItemNewFolderUser            = 12,
  91. /* pseudo-item hits for use in DlgHook */
  92.     sfHookFirstCall                = -1,
  93.     sfHookCharOffset            = 0x1000,
  94.     sfHookNullEvent                = 100,
  95.     sfHookRebuildList            = 101,
  96.     sfHookFolderPopUp            = 102,
  97.     sfHookOpenFolder            = 103,
  98. /* the following are only in system 7.0+ */
  99.     sfHookOpenAlias                = 104,
  100.     sfHookGoToDesktop            = 105,
  101.     sfHookGoToAliasTarget        = 106,
  102.     sfHookGoToParent            = 107,
  103.     sfHookGoToNextDrive            = 108,
  104.     sfHookGoToPrevDrive            = 109,
  105.     sfHookChangeSelection        = 110
  106. };
  107.  
  108. enum {
  109.     sfHookSetActiveOffset        = 200,
  110.     sfHookLastCall                = -2
  111. };
  112.  
  113. /* the refcon field of the dialog record during a
  114.  modalfilter or dialoghook contains one of the following */
  115. enum {
  116.     sfMainDialogRefCon            = 'stdf',
  117.     sfNewFolderDialogRefCon        = 'nfdr',
  118.     sfReplaceDialogRefCon        = 'rplc',
  119.     sfStatWarnDialogRefCon        = 'stat',
  120.     sfLockWarnDialogRefCon        = 'lock',
  121.     sfErrorDialogRefCon            = 'err '
  122. };
  123.  
  124. struct SFReply {
  125.     Boolean                            good;
  126.     Boolean                            copy;
  127.     OSType                            fType;
  128.     short                            vRefNum;
  129.     short                            version;
  130.     Str63                            fName;
  131. };
  132. typedef struct SFReply SFReply;
  133.  
  134. struct StandardFileReply {
  135.     Boolean                            sfGood;
  136.     Boolean                            sfReplacing;
  137.     OSType                            sfType;
  138.     FSSpec                            sfFile;
  139.     ScriptCode                        sfScript;
  140.     short                            sfFlags;
  141.     Boolean                            sfIsFolder;
  142.     Boolean                            sfIsVolume;
  143.     long                            sfReserved1;
  144.     short                            sfReserved2;
  145. };
  146. typedef struct StandardFileReply StandardFileReply;
  147.  
  148. /* for CustomXXXFile, ActivationOrderListPtr parameter is a pointer to an array of item numbers */
  149. typedef const short *ActivationOrderListPtr;
  150.  
  151. /* the following also include an extra parameter of "your data pointer" */
  152. typedef OSType SFTypeList[4];
  153.  
  154. typedef pascal short (*DlgHookProcPtr)(short item, DialogPtr theDialog);
  155. typedef pascal Boolean (*FileFilterProcPtr)(CInfoPBPtr pb);
  156. typedef pascal short (*DlgHookYDProcPtr)(short item, DialogPtr theDialog, void *yourDataPtr);
  157. typedef pascal Boolean (*ModalFilterYDProcPtr)(DialogPtr theDialog, EventRecord *theEvent, short *itemHit, void *yourDataPtr);
  158. typedef pascal Boolean (*FileFilterYDProcPtr)(CInfoPBPtr pb, void *yourDataPtr);
  159. typedef pascal void (*ActivateYDProcPtr)(DialogPtr theDialog, short itemNo, Boolean activating, void *yourDataPtr);
  160.  
  161. #if GENERATINGCFM
  162. typedef UniversalProcPtr DlgHookUPP;
  163. typedef UniversalProcPtr FileFilterUPP;
  164. typedef UniversalProcPtr DlgHookYDUPP;
  165. typedef UniversalProcPtr ModalFilterYDUPP;
  166. typedef UniversalProcPtr FileFilterYDUPP;
  167. typedef UniversalProcPtr ActivateYDUPP;
  168. #else
  169. typedef DlgHookProcPtr DlgHookUPP;
  170. typedef FileFilterProcPtr FileFilterUPP;
  171. typedef DlgHookYDProcPtr DlgHookYDUPP;
  172. typedef ModalFilterYDProcPtr ModalFilterYDUPP;
  173. typedef FileFilterYDProcPtr FileFilterYDUPP;
  174. typedef ActivateYDProcPtr ActivateYDUPP;
  175. #endif
  176.  
  177. enum {
  178.     uppDlgHookProcInfo = kPascalStackBased
  179.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  180.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  181.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(DialogPtr))),
  182.     uppFileFilterProcInfo = kPascalStackBased
  183.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  184.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CInfoPBPtr))),
  185.     uppDlgHookYDProcInfo = kPascalStackBased
  186.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  187.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  188.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(DialogPtr)))
  189.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*))),
  190.     uppModalFilterYDProcInfo = kPascalStackBased
  191.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  192.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr)))
  193.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*)))
  194.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*)))
  195.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*))),
  196.     uppFileFilterYDProcInfo = kPascalStackBased
  197.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  198.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CInfoPBPtr)))
  199.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void*))),
  200.     uppActivateYDProcInfo = kPascalStackBased
  201.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr)))
  202.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  203.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean)))
  204.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
  205. };
  206.  
  207. #if GENERATINGCFM
  208. #define NewDlgHookProc(userRoutine)        \
  209.         (DlgHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookProcInfo, GetCurrentArchitecture())
  210. #define NewFileFilterProc(userRoutine)        \
  211.         (FileFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterProcInfo, GetCurrentArchitecture())
  212. #define NewDlgHookYDProc(userRoutine)        \
  213.         (DlgHookYDUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookYDProcInfo, GetCurrentArchitecture())
  214. #define NewModalFilterYDProc(userRoutine)        \
  215.         (ModalFilterYDUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppModalFilterYDProcInfo, GetCurrentArchitecture())
  216. #define NewFileFilterYDProc(userRoutine)        \
  217.         (FileFilterYDUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterYDProcInfo, GetCurrentArchitecture())
  218. #define NewActivateYDProc(userRoutine)        \
  219.         (ActivateYDUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppActivateYDProcInfo, GetCurrentArchitecture())
  220. #else
  221. #define NewDlgHookProc(userRoutine)        \
  222.         ((DlgHookUPP) (userRoutine))
  223. #define NewFileFilterProc(userRoutine)        \
  224.         ((FileFilterUPP) (userRoutine))
  225. #define NewDlgHookYDProc(userRoutine)        \
  226.         ((DlgHookYDUPP) (userRoutine))
  227. #define NewModalFilterYDProc(userRoutine)        \
  228.         ((ModalFilterYDUPP) (userRoutine))
  229. #define NewFileFilterYDProc(userRoutine)        \
  230.         ((FileFilterYDUPP) (userRoutine))
  231. #define NewActivateYDProc(userRoutine)        \
  232.         ((ActivateYDUPP) (userRoutine))
  233. #endif
  234.  
  235. #if GENERATINGCFM
  236. #define CallDlgHookProc(userRoutine, item, theDialog)        \
  237.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDlgHookProcInfo, (item), (theDialog))
  238. #define CallFileFilterProc(userRoutine, pb)        \
  239.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppFileFilterProcInfo, (pb))
  240. #define CallDlgHookYDProc(userRoutine, item, theDialog, yourDataPtr)        \
  241.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDlgHookYDProcInfo, (item), (theDialog), (yourDataPtr))
  242. #define CallModalFilterYDProc(userRoutine, theDialog, theEvent, itemHit, yourDataPtr)        \
  243.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppModalFilterYDProcInfo, (theDialog), (theEvent), (itemHit), (yourDataPtr))
  244. #define CallFileFilterYDProc(userRoutine, pb, yourDataPtr)        \
  245.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppFileFilterYDProcInfo, (pb), (yourDataPtr))
  246. #define CallActivateYDProc(userRoutine, theDialog, itemNo, activating, yourDataPtr)        \
  247.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppActivateYDProcInfo, (theDialog), (itemNo), (activating), (yourDataPtr))
  248. #else
  249. #define CallDlgHookProc(userRoutine, item, theDialog)        \
  250.         (*(userRoutine))((item), (theDialog))
  251. #define CallFileFilterProc(userRoutine, pb)        \
  252.         (*(userRoutine))((pb))
  253. #define CallDlgHookYDProc(userRoutine, item, theDialog, yourDataPtr)        \
  254.         (*(userRoutine))((item), (theDialog), (yourDataPtr))
  255. #define CallModalFilterYDProc(userRoutine, theDialog, theEvent, itemHit, yourDataPtr)        \
  256.         (*(userRoutine))((theDialog), (theEvent), (itemHit), (yourDataPtr))
  257. #define CallFileFilterYDProc(userRoutine, pb, yourDataPtr)        \
  258.         (*(userRoutine))((pb), (yourDataPtr))
  259. #define CallActivateYDProc(userRoutine, theDialog, itemNo, activating, yourDataPtr)        \
  260.         (*(userRoutine))((theDialog), (itemNo), (activating), (yourDataPtr))
  261. #endif
  262.  
  263. extern pascal void SFPutFile(Point where, ConstStr255Param prompt, ConstStr255Param origName, DlgHookUPP dlgHook, SFReply *reply)
  264.  THREEWORDINLINE(0x3F3C, 0x0001, 0xA9EA);
  265. extern pascal void SFGetFile(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply)
  266.  THREEWORDINLINE(0x3F3C, 0x0002, 0xA9EA);
  267. extern pascal void SFPPutFile(Point where, ConstStr255Param prompt, ConstStr255Param origName, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc)
  268.  THREEWORDINLINE(0x3F3C, 0x0003, 0xA9EA);
  269. extern pascal void SFPGetFile(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc)
  270.  THREEWORDINLINE(0x3F3C, 0x0004, 0xA9EA);
  271. extern pascal void StandardPutFile(ConstStr255Param prompt, ConstStr255Param defaultName, StandardFileReply *reply)
  272.  THREEWORDINLINE(0x3F3C, 0x0005, 0xA9EA);
  273. extern pascal void StandardGetFile(FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply)
  274.  THREEWORDINLINE(0x3F3C, 0x0006, 0xA9EA);
  275. extern pascal void CustomPutFile(ConstStr255Param prompt, ConstStr255Param defaultName, StandardFileReply *reply, short dlgID, Point where, DlgHookYDUPP dlgHook, ModalFilterYDUPP filterProc, ActivationOrderListPtr activeList, ActivateYDUPP activate, void *yourDataPtr)
  276.  THREEWORDINLINE(0x3F3C, 0x0007, 0xA9EA);
  277. extern pascal void CustomGetFile(FileFilterYDUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply, short dlgID, Point where, DlgHookYDUPP dlgHook, ModalFilterYDUPP filterProc, ActivationOrderListPtr activeList, ActivateYDUPP activate, void *yourDataPtr)
  278.  THREEWORDINLINE(0x3F3C, 0x0008, 0xA9EA);
  279. extern pascal OSErr StandardOpenDialog(StandardFileReply *reply);
  280. #if CGLUESUPPORTED
  281. extern void sfpputfile(Point *where, const char *prompt, const char *origName, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc);
  282. extern void sfgetfile(Point *where, const char *prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply);
  283. extern void sfpgetfile(Point *where, const char *prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc);
  284. extern void sfputfile(Point *where, const char *prompt, const char *origName, DlgHookUPP dlgHook, SFReply *reply);
  285. #endif
  286.  
  287. #ifdef __CFM68K__
  288. #pragma lib_export off
  289. #endif
  290.  
  291. #if GENERATINGPOWERPC
  292. #pragma options align=reset
  293. #endif
  294.  
  295. #ifdef __cplusplus
  296. }
  297. #endif
  298.  
  299. #endif /* __STANDARDFILE__ */
  300.